import { reqGoodsInfo, reqAddOrUpdateShopCart } from '../../api/index'
// 封装临时游客uuid 生产之后不能变了
import { getUUID } from '../../utils/uuid_token'
const state = {
    goodInfo: {},
    // 游客临时身份
    uuid_token: getUUID()
}
const mutations = {
    GETGOODSINFO(state, goodInfo) {
        state.goodInfo = goodInfo
    }
}
const actions = {
    // 获取产品信息
    async getGoodsInfo({ commit }, skuId) {
        let res = await reqGoodsInfo(skuId)
        if (res.code == 200) {
            commit('GETGOODSINFO', res.data)
        }
    },
    // 加入购物车
    async addOrUptateShopCart(context, { skuId, skuNum }) {
        // 加入购物车返回解构
        // 加入购物车以后（发请求） 前台讲参数带给服务器 服务器写入数据成功。并没有返回data数据，只有code==200，这代表这次操作成功
        // 因为服务器没有返回数据所以不需要三连环
        let res = await reqAddOrUpdateShopCart(skuId, skuNum)

        // 当前函数返回的是一个Promise
        if (res.code == 200) {
            return 'ok'
        } else {
            return Promise.reject(new Error('faile'))
        }

    }

}
const getters = {
    // 路径导航
    categoryView(state) {
        return state.goodInfo.categoryView || {}
    },
    // 产品信息
    skuInfo(state) {
        return state.goodInfo.skuInfo || {}
    },
    // 产品售卖属性
    spuSaleAttrList(state) {
        return state.goodInfo.spuSaleAttrList || []
    }
}
export default {
    state,
    mutations,
    actions,
    getters
}